package cn.lg.soar.common.data.status;

import cn.lg.soar.common.data.dict.IDict;

/**
 * 状态类接口
 * @author luguoxiang
 * 开源项目：https://gitee.com/lgx1992/lg-soar 求star！请给我star！请帮我点个star！
 */
public interface IStatus<S extends IStatus<S, V>, V> extends IDict<V> {

    /**
     * 默认值
     * @return
     */
    S defaultValue();

    /**
     * 是否是下一个状态
     * @param currentStatus 当前状态
     * @return
     */
    boolean isNext(V currentStatus);

    /**
     * 是否是下一个状态
     * @param currentStatus 当前状态
     * @return
     */
    default boolean isNext(S currentStatus) {
        return isNext(currentStatus.getValue());
    }

}
